package principal;

import tsb.sax.ContentHandlerModel;
import tsb.sax.SAXException;
import tsb.util.AtributoValor;

/**
 * define todos los eventos que se producen a lo largo del documento.
 * implementacion del content handler Model que carga el dom
 */

public class ManejadorSAX implements ContentHandlerModel {

    public ManejadorSAX() {
    }

    public void inicioDocumento() throws SAXException {
        // detecta el comiezo de un nuevo elemento
        printConsola("## comiezo del documento ##");
    }

    public void finDocumento() throws SAXException {
        // detecta el final de un nuevo elemento
        printConsola("## final del documento ##");
    }

    public void tagInicio(String nombre, String read, AtributoValor[] variables) throws SAXException {
        this.printConsola("Elemento : " + nombre);

        if(variables.length > 0){
            this.printConsola(" ");
            this.printConsola("Atributos ------------- ");

            for(int i = 0; i< variables.length; i++){
                this.printConsola("i= " + String.valueOf(i) +
                                  " - " + variables[i].getNombre() +
                                  " = " + variables[i].getValor()
                                  );
            }
        }
    }

    public void tagFinal(String nombre, String read) throws SAXException {
        this.printConsola("Fin elemento: " + nombre);
    }

    public void addContenido(String content) throws SAXException {
        this.printConsola(content);
    }

    public void prologoXML(AtributoValor[] variables) throws SAXException {
        this.printConsola(variables);
    }

    private void printConsola(String msg) {
        System.out.println(msg);
    }

    private void printConsola(AtributoValor[] docinfo) {
        String msg = "DocInfo:";

        for (int i = 0; i < docinfo.length; i++) {
            AtributoValor atributo = docinfo[i];
            msg += "\n\t" + atributo.toString();
        }

        System.out.println(msg);
    }
}